package com.stu.day12;

/**
 * Integer类常用方法
 * @author zy
 * @date 2025/2/10 09:38
 */
public class IntegerDemo {
    public static final int a;
    static{
        a = 1;
    }
    public static void main(String[] args) {
        Integer i = new Integer(10);//int->Integer
        Integer j = new Integer("10");//String->Integer

        System.out.println(i == j);//false
        System.out.println(i.equals(j));//true

        //基本数据类型和包装类型比较
        //TODO 包装类型会自动解箱成基本数据类型,然后再和基本数据类型进行比较.
        int m = 10;
        //j.intValue()
        System.out.println(m == j);//true

        //TODO valueOf
        Integer x = Integer.valueOf("10");
        //Integer x = 130;
        Integer y = Integer.valueOf(10);
        //Integer y = 130;
        System.out.println(x==j);//false
        System.out.println(x==y);//true  -128~127内true
        // IntegerCache.cache[i + 128],即[0]~[256]

        //TODO String-int-Integer三者相互转换
        //int类型->String类型
        //String类中提供的public static String valueOf(int i);
        int i1 = 10;
        String s1 = String.valueOf(i1);

        //Integer类型->String类型
        //a. Integer类中提供的public String toString();
        //b. public static String valueOf(Object obj);
        Integer I2 = Integer.valueOf(20);
        String s2 = String.valueOf(I2);
        String s22 = I2.toString();

        //String类型->int类型
        //Interger类提供的public static int parseInt(String s);
        String s3 = "30";
        int i3 = Integer.parseInt(s2);

        //Integer类型->int类型
        //a. jdk5.0支持的自动解/拆箱
        //b. public int intValue();
        Integer I4 = Integer.valueOf(40);
        int i4 = I4;
        int i44 = I4.intValue();

        //String类型->Integer类型
        //a. Integer的过时的构造Integer(String s);
        //b. Integer类型中提供的public static Integer valueOf(String s)
        String s5 = "50";
        Integer I5 = new Integer("s5");
        Integer I55 = Integer.valueOf(50);

        //int类型->Integer类型
        //a. Integer的过时的构造Integer(int n);
        //b. jdk5.0支持的自动封箱
        //c. Integer类型中提供的public static Integer valueOf(int n)
        int i6 = 60;
        Integer I6 = new Integer(i6);
        Integer i66 = i6;
        Integer I666 = Integer.valueOf(60);
    }
}
